package com.java2_23;

import java.util.Scanner;

public class java2_23 {
    //    public static void main(String[] args) {
//        Test t = new Test();
//        //静态方法的两种调用方法
//        //t.methodA();
//        Test.methodA();
//
//    }
//    public static void main(String[] args) {
//        // 请补齐代码，使得编译通过，并在控制台输出(吃饭)
//        //静态里面不能调用非静态的方法
//        java2_23 j = new java2_23();
//        j.eat();
//
//    }
//
//    public void eat() {
//        System.out.println("吃饭!");
//    }
//    public static void main(String[] args) {
//        Student s = new Student("zhangsan",20);
//        Student.setSchool("希望大学");
//        System.out.println(s.toString());
//        Student.setSchool("成龙大学");
//        //静态成员变量一改全改
//        System.out.println(s.toString());
//    public static void main(String[] args) {
////        Scanner sc = new Scanner(System.in);
////        System.out.print("请输入信息：");
////        System.out.println(sc.nextInt());
////        System.out.println(sc.next());
////        System.out.println(sc.nextDouble());
////        System.out.println(sc.nextLine());
//
////        int a = 10;
////        int b = 20;
////        System.out.println(MyMath.add(a, b));
////        System.out.println(MyMath.del(a, b));
////        System.out.println(MyMath.mul(a, b));
////        System.out.println(MyMath.div(a, b));
//
//    }
//    public static void main(String[] args) {
////        InterImplementsOK i = new InterImplementsOK();
////        i.method6();
//        Inter2.staticShow();
//        InterImplements2 i = new InterImplements2();
//                i.show();
//
//
//    }
//    public static void main(String[] args) {
//        //变量的生命周期
////        {
////            int a = 10;
////            System.out.println(a);
////        }
////        System.out.println(a);
//
////        NeiBuLeiTest n = new NeiBuLeiTest();
////        NeiBuLeiTest n1 = new NeiBuLeiTest();
////        NeiBuLeiTest n2 = new NeiBuLeiTest();
////        System.out.println(n.toString());
//
//
//    }
//    public static void main(String[] args) {
////        NeiBuLeiTest.Nei nn = new NeiBuLeiTest().new Nei();
////        NeiBuLeiTest.Nei nn1 = new NeiBuLeiTest().new Nei();
////        System.out.println(nn.number);
//        NeiBuLeiTest n = new NeiBuLeiTest();
//        NeiBuLeiTest.Nei.show();
//
//    }
//    public static void main(String[] args) {
//        //匿名内部类给到接口
////        test(new TestInter() {
////            @Override
////            public void show() {
////                System.out.println("I LOVE JAVA !");
////            }
////        });
//        //匿名内部类给到父类当子类对象
//        testFuZi(new People() {
//            @Override
//            public void show() {
//                System.out.println("这是匿名内部类的重写show方法");
//            }
//        });
//
//
//    }
//    public static void test(TestInter t){
//        t.show();
//    }
//    public static void testFuZi(People p){
//        p.show();
//    }
//    public static void main(String[] args) {
//        //递归 -- 在自己里面调用自己
////        test();
//        //求10！
//        long begin = System.currentTimeMillis();
//
//        int n = 10;
//        int ret = sumJie(n);
//        System.out.println(ret);
//
//        long end = System.currentTimeMillis();
//
//        System.out.println(end - begin);
//    }
//
//    //    public static void test(){
////        System.out.println("hahaha");
////        test();
////    }
//    public static int sumJie(int num) {
//        if (num == 0)
//            return 1;
//        else
//            return num * sumJie(num - 1);
//    }

        /**
         * 一共走了多少步
         */
        static int times;

        public static void main(String[] args) {
            char A = 'A';
            char B = 'B';
            char C = 'C';
            System.out.println("汉诺塔游戏开始------------");
            System.out.print("请输入盘子数：");
            Scanner s = new Scanner(System.in);
            int n = s.nextInt();
            //调用汉诺塔
            hannoi(n, A, B, C);
            s.close();

        }
        /**
         * 盘子移动
         * @param disk
         * @param M
         * @param N
         */
        public static void move(int disk, char M, char N ){
            System.out.println("第"+(++times)+"次移动, 盘子"+disk+ "  "+M+"------->"+N);
        }


        public static void hannoi(int n, char A, char B, char C){
            if(n == 1){
                move(n, A, C);
            }else{
                //移动上一关的步骤移动到B
                hannoi(n - 1, A, C, B);
                //把最大的盘子移动C塔
                move(n, A, C);
                //再把B上的上一关的盘子移动到C上就可以了
                hannoi(n - 1, B, A, C);

            }
        }



}
